package com.zx.idc.backend.gui.api.commom.factory.digest;

import org.apache.commons.codec.binary.Base64;

/**
 * 签名方法定义接口
 */
public interface Digest {


    /**
     * 默认base64编码
     */
    default String base64Encode(String text) {
        return Base64.encodeBase64String(text.getBytes());
    }

    /**
     * 接受一个字符串，计算签名
     * @param targetString 被用来计算签名的目标字符串
     * @param password 密码
     * @param isBase64Encode 是否做Base64转码，true：是，false：否
     * @return 签名
     */
    default String digest(String targetString, String password, boolean isBase64Encode) {
        return null;
    }



    /**
     * 接受一个字节数组计算签名
     * @param targetBytes 用于计算签名的目标数组
     * @param password 字符串
     * @param isBase64Encode 是否做Base64转码，true：是，false：否
     * @return 签名
     */
    default String digest(byte[] targetBytes, String password, boolean isBase64Encode) {
        return null;
    }

    /**
     * 接受一个字符串，计算签名，不用密码
     * @param targetBytes 用于计算签名的目标数组
     * @param isBase64Encode 是否做Base64转码，true：是，false：否
     * @return 签名
     */
    default String digestWithoutPassword(byte[] targetBytes, boolean isBase64Encode) {
        return null;
    }

    /**
     * 接受一个字符串，计算签名，不用密码
     * @param targetString 被用来计算签名的目标字符串
     * @param isBase64Encode 是否做Base64转码，true：是，false：否
     * @return 签名
     */
    default String digestWithoutPassword(String targetString, boolean isBase64Encode) {
        return null;
    }

}
